
import java.util.LinkedHashSet;
import java.util.Set;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: fzykd
 * Date: 2023-03-06
 * Time: 15:19
 */

@SuppressWarnings({"all"})
public class LinkedHashSetSource {
    public static void main(String[] args) {
        //分析LinkedHashSet底层
        Set set = new LinkedHashSet();
        set.add(new String("AA"));
        set.add(456);
        set.add(456);
        set.add(new Customer("刘",1001));
        set.add(123);
        set.add("HSP");

        System.out.println("set=" + set);
        //set=[AA, 456, Customer@1b6d3586, 123, HSP]

        //1.加入顺序和取出的顺序 一致
        //2.LinkHashSet底层是LinkedHashMap 是HashMap的子类
        //3.LinkedHashSet 底层结构是(数组table+双向链表)
        //4.第一次添加时,直接将数组 table扩容到16 table(哈希表)里面存放的节点不是Node
        //  而是节点类型为LinkedHashMap$Entry
        //5.数组是HashMap$Node[] 但是存放的元素/数据是LinkedHashMap$Entry类型 说明之间有继承 或者是是实现关系 多态现象

    }
}


class Customer{
    private String name;
    private int no;

    public Customer(String name, int no) {
        this.name = name;
        this.no = no;
    }
}